﻿#ifndef _INTER_MOTION_LOAD_H_
#define _INTER_MOTION_LOAD_H_

#include <list>
#include <memory>

typedef struct _Tami_MotionData
{
	__int64 nID;
	bool bTrack;

	float nHead[3];
	float nHand_Left[3];
	float nHand_Right[3];
	float nElbow_Left[3];
	float nElbow_Right[3];
	float nShoulder_Left[3];
	float nShoulder_Right[3];
	float nShoulder_Center[3];
	float nSpine[3];  // alse used for distance
	float nHip_Left[3];
	float nHip_Right[3];
	float nKnee_Left[3];
	float nKnee_Right[3];
	float nAnkle_Left[3];
	float nAnkle_Right[3];
	float nFoot_Left[3];
	float nFoot_Right[3];
}Tami_MotionData;

typedef void(*CB_TAMI_MOTION)(std::list< std::shared_ptr<Tami_MotionData> > pDataList);

/*
* 返回此DLL的设备基础信息. len: MAX_PATH
*/
typedef void (*Func_MotionDriver_Info)(char* pInfo);

/*
* Init, 初始化体感设备
* index, -1 默认，否则指定
* pFunc, null 数据不回掉
*/
typedef bool (*Func_MotionDriver_Init)(int nIndex, CB_TAMI_MOTION pFunc);

/*
* GetData, 获取实时数据
*/
typedef bool (*Func_MotionDriver_GetData)(std::list< std::shared_ptr<Tami_MotionData> >& pDataList);

/*
* SetState, 设置工作状态，Work or Pause
*/
typedef void (*Func_MotionDriver_SetState)(bool bPause);

/*
* State, 获取工作状态，Work or Pause
*/
typedef bool (*Func_MotionDriver_State)();

/*
* Exit, 退出
*/
typedef void (*Func_MotionDriver_Exit)();

#endif

